DataFrame和Series除了前一天教的功能外,還有其他幾個運用,像是Python本身的應用、NumPy、lambda等等。
cities = pd.DataFrame({ 'City name': city_names, 'Population': population })
print(type(cities['City name'][1]))
cities['City name'][1]
結果會是:
<class 'str'>
'San Jose'
同樣的例子,加上:
print(type(cities[0:2]))
cities[0:2]
就會變成:<class 'pandas.core.frame.DataFrame'>
# | City name | Population |
---|---|---|
0 | San Francisco | 852469 |
1 | San Jose | 1015785 |
是不是跟Python平常處理list
的狀況很類似呢?因為他是python底下的程式,所以如果需要一些資料的處理,可以直接使用python的功能,就把DataFrame
視為dic
或list
吧!
當然pandas是一個厲害的套件,所以更多的運用可以參考更多API的功能吧!
population = pd.Series([852469, 1015785, 485199])
a = population + 10000
b = population - 10000
c = population * 1000
d = population / 1000.
print(a)
print(b)
print(c)
print(d)
結果是:
0 862469
1 1025785
2 495199
dtype: int64
0 842469
1 1005785
2 475199
dtype: int64
0 852469000
1 1015785000
2 485199000
dtype: int64
0 852.469
1 1015.785
2 485.199
dtype: float64
是不是很厲害呢!不用逐一拿出來計算,直接用公式套進每個數字,讓數字整批的作業,這個概念跟進行資料庫欄位的作法相同。
Series
可用作大多數的NumPy
內的功能,[Day05]聊聊重要的三個package吧!同樣的population,只要引入numpy
就可以用
import numpy as np
np.log(population)
結果:
0 13.655892
1 13.831172
2 13.092314
dtype: float64
更多功能直接參考網站吧!
population.apply(lambda val: val > 1000000)
結果:
0 False
1 True
2 False
dtype: bool
是不是跟一般使用的lambda
一樣呢!(如果不熟悉lambda
的話,趕快去惡補一下)
以上為簡單的說明,更多運用要參考文件。
睫毛之聲:
pandas套件不僅僅儲存資料結構而已,還有本身的各種運用,再結合python的運算,可以讓資料產生更多的變化,跟直接在資料庫處理數據相仿,功能十分強大。